{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# %load \"/home/huang/sympy_work_code/environment.py\"\n",
    "from sympy import *\n",
    "from sympy.abc import x,y,z,t,k,l,n,m,p,q\n",
    "from sympy.calculus.util import *\n",
    "from sympy.stats import *\n",
    "\n",
    "from sys import path\n",
    "path.append(\"/home/huang/Documents/packaging_tutorial/src\")\n",
    "\n",
    "%load_ext autoreload \n",
    "%autoreload 1\n",
    "\n",
    "%aimport basic_package.utils\n",
    "%aimport function_calculator_package.extreme_points\n",
    "%aimport quadratic_function.utils\n",
    "%aimport quadratic_function.hyperbola\n",
    "%aimport quadratic_function.utils\n",
    "\n",
    "from basic_package.utils import *\n",
    "from function_calculator_package.extreme_points import *\n",
    "from quadratic_function.quadraticfunction import QuadraticFunction\n",
    "from quadratic_function.hyperbola import Hyperbola\n",
    "from quadratic_function.utils import line_and_quadratic\n",
    "\n",
    "%aimport solver.utils\n",
    "from solver.utils import solve_univariate_inequalities\n",
    "\n",
    "%aimport function_calculator_package.utils \n",
    "from function_calculator_package.utils import function_is_odd\n",
    "\n",
    "%aimport geometry3D.frustum\n",
    "%aimport geometry3D.prism\n",
    "%aimport geometry3D.pyramid\n",
    "from geometry3D.frustum import Frustum\n",
    "from geometry3D.prism import Prism,Cube\n",
    "from geometry3D.pyramid import Pyramid,Cone,Tetrahedron\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "%aimport geometry3D.polygon3D\n",
    "from geometry3D.polygon3D import RegularPolygon3D,Polygon3D\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{86}$"
      ],
      "text/plain": [
       "sqrt(86)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqrt(86)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.009615384615384637"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "5/13-3/8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=sin(S(40)/180*pi)*(tan(pi/18)-tan(pi/3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(- \\sqrt{3} + \\tan{\\left(\\frac{\\pi}{18} \\right)}\\right) \\sin{\\left(\\frac{2 \\pi}{9} \\right)}$"
      ],
      "text/plain": [
       "(-sqrt(3) + tan(pi/18))*sin(2*pi/9)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(- \\sqrt{3} + \\tan{\\left(\\frac{\\pi}{18} \\right)}\\right) \\sin{\\left(\\frac{2 \\pi}{9} \\right)} = -1$"
      ],
      "text/plain": [
       "Eq((-sqrt(3) + tan(pi/18))*sin(2*pi/9), -1)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Eq(expr,-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2.0 \\cdot 10^{-125}$"
      ],
      "text/plain": [
       "0.e-125"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N(expr+1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{\\frac{1}{2} - \\frac{\\cos{\\left(\\frac{4 \\pi}{9} \\right)}}{2}} \\left(- \\sqrt{3} + \\tan{\\left(\\frac{\\pi}{18} \\right)}\\right)$"
      ],
      "text/plain": [
       "sqrt(1/2 - cos(4*pi/9)/2)*(-sqrt(3) + tan(pi/18))"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand_trig(expr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "poly=RegularPolygon(Point(0,0),1,6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "m=Matrix(list(poly.vertices))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}1 & 0\\\\\\frac{1}{2} & \\frac{\\sqrt{3}}{2}\\\\- \\frac{1}{2} & \\frac{\\sqrt{3}}{2}\\\\-1 & 0\\\\- \\frac{1}{2} & - \\frac{\\sqrt{3}}{2}\\\\\\frac{1}{2} & - \\frac{\\sqrt{3}}{2}\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[   1,          0],\n",
       "[ 1/2,  sqrt(3)/2],\n",
       "[-1/2,  sqrt(3)/2],\n",
       "[  -1,          0],\n",
       "[-1/2, -sqrt(3)/2],\n",
       "[ 1/2, -sqrt(3)/2]])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m.rank()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "cube=Cube(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "A,B,C,D,A1,B1,C1,D1=cube.vertices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point3D}\\left(1, 1, 0\\right)$"
      ],
      "text/plain": [
       "Point3D(1, 1, 0)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "C"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "m=Matrix([C,D1,B1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}1 & 1 & 0\\\\1 & 1 & 0\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[1, 1, 0],\n",
       "[1, 1, 0]])"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Matrix([m[0,:]]*2)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2$"
      ],
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m.det()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{2 \\sqrt{3}}{3}$"
      ],
      "text/plain": [
       "2*sqrt(3)/3"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A.distance(Plane(C,D1,B1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "tri=Polygon3D(C,D1,B1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}1 & 0 & 1\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([[1, 0, 1]])"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m[2:3,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{3}}{2}$"
      ],
      "text/plain": [
       "sqrt(3)/2"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tri.area"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "A,B,C,D,A1,B1,C1,D1=cube.vertices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "E=(A1+B1)/2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "F=(B1+B)/2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "G=(B+C)/2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "H=(C+D)/2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "I=(D+D1)/2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "J=(A1+D1)/2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "poly=Polygon3D(E,F,G,H,I,J)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3 \\sqrt{3}}{4}$"
      ],
      "text/plain": [
       "3*sqrt(3)/4"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly.area"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8403869407496978"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1.39/0.827*0.8/1.6"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 山西2023-2024高一4月份期中调研测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "A=Matrix([1,x])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}1\\\\x\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[1],\n",
       "[x]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "B=Matrix([y,4])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}y\\\\4\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[y],\n",
       "[4]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{\\left( 2, \\  2\\right)\\right\\}$"
      ],
      "text/plain": [
       "{(2, 2)}"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "linsolve(list(B-2*A),[x,y])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 1 - 2 i$"
      ],
      "text/plain": [
       "1 - 2*I"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify((1+I)/I-I)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{35}}{2}$"
      ],
      "text/plain": [
       "sqrt(35)/2"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqrt(3**2-(S(1)/2)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 227,
   "metadata": {},
   "outputs": [],
   "source": [
    "m,n=symbols(\"m,n\",real=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {},
   "outputs": [],
   "source": [
    "q=QuadraticFunction(1,2,n-m*I)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - i m + n + 2 + \\left(1 + 2 i\\right)^{2} + 4 i$"
      ],
      "text/plain": [
       "-I*m + n + 2 + (1 + 2*I)**2 + 4*I"
      ]
     },
     "execution_count": 229,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q.equation(x).subs(x,1+2*I)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 230,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(n - 1, 8 - m)"
      ]
     },
     "execution_count": 230,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_).as_real_imag()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/huang/anaconda3/lib/python3.9/site-packages/sympy/geometry/point.py:312: UserWarning: Dimension of (0, 0) needs to be changed from 2 to 3.\n",
      "  return [Point(i, **kwargs) for i in points]\n"
     ]
    }
   ],
   "source": [
    "tetrahedron=Tetrahedron(4*sqrt(2/S(3)),RegularPolygon((0,0),4/sqrt(3),3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "A,B,C,D=tetrahedron.vertices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4$"
      ],
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A.distance(B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4$"
      ],
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "C.distance(B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 24 \\pi$"
      ],
      "text/plain": [
       "24*pi"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tetrahedron.circumsphere.surface_area"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [],
   "source": [
    "%aimport basic_package.vec\n",
    "from basic_package.vec import Vec"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "a,b,c=symbols(\"a,b,c\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(b - c\\right) \\left(- 2 a + b + c\\right)$"
      ],
      "text/plain": [
       "(b - c)*(-2*a + b + c)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(b-c)*(b+c-2*a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - 2 a b + 2 a c + b^{2} - c^{2}$"
      ],
      "text/plain": [
       "-2*a*b + 2*a*c + b**2 - c**2"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(a - b\\right) \\left(- b + c\\right)$"
      ],
      "text/plain": [
       "(a - b)*(-b + c)"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(a-b)*(c-b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [],
   "source": [
    "z1=(cos(x)+cos(2*x))+(sin(2*x)+sin(x))*I"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle i \\left(\\sin{\\left(x \\right)} + \\sin{\\left(2 x \\right)}\\right) + \\cos{\\left(x \\right)} + \\cos{\\left(2 x \\right)}$"
      ],
      "text/plain": [
       "I*(sin(x) + sin(2*x)) + cos(x) + cos(2*x)"
      ]
     },
     "execution_count": 232,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "metadata": {},
   "outputs": [],
   "source": [
    "z2=sin(x)+cos(x)*I"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sin{\\left(x \\right)} + i \\cos{\\left(x \\right)}$"
      ],
      "text/plain": [
       "sin(x) + I*cos(x)"
      ]
     },
     "execution_count": 234,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(\\sin{\\left(x \\right)} + \\sin{\\left(2 x \\right)}\\right)^{2} + \\left(\\cos{\\left(x \\right)} + \\cos{\\left(2 x \\right)}\\right)^{2}$"
      ],
      "text/plain": [
       "(sin(x) + sin(2*x))**2 + (cos(x) + cos(2*x))**2"
      ]
     },
     "execution_count": 235,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(cos(x)+cos(2*x))**2+(sin(2*x)+sin(x))**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sin^{2}{\\left(x \\right)} + 2 \\sin{\\left(x \\right)} \\sin{\\left(2 x \\right)} + \\sin^{2}{\\left(2 x \\right)} + \\cos^{2}{\\left(x \\right)} + 2 \\cos{\\left(x \\right)} \\cos{\\left(2 x \\right)} + \\cos^{2}{\\left(2 x \\right)}$"
      ],
      "text/plain": [
       "sin(x)**2 + 2*sin(x)*sin(2*x) + sin(2*x)**2 + cos(x)**2 + 2*cos(x)*cos(2*x) + cos(2*x)**2"
      ]
     },
     "execution_count": 237,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand(expr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 \\cos{\\left(x \\right)} + 2$"
      ],
      "text/plain": [
       "2*cos(x) + 2"
      ]
     },
     "execution_count": 238,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 239,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(\\sin{\\left(x \\right)} + i \\cos{\\left(x \\right)}\\right) \\left(i \\left(\\sin{\\left(x \\right)} + \\sin{\\left(2 x \\right)}\\right) + \\cos{\\left(x \\right)} + \\cos{\\left(2 x \\right)}\\right)$"
      ],
      "text/plain": [
       "(sin(x) + I*cos(x))*(I*(sin(x) + sin(2*x)) + cos(x) + cos(2*x))"
      ]
     },
     "execution_count": 239,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z1*z2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 240,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\sin{\\left(x \\right)} + i \\cos{\\left(x \\right)} + i$"
      ],
      "text/plain": [
       "-sin(x) + I*cos(x) + I"
      ]
     },
     "execution_count": 240,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 241,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - 2 i$"
      ],
      "text/plain": [
       "-2*I"
      ]
     },
     "execution_count": 241,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(z1/z2).subs(x,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 260,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 i$"
      ],
      "text/plain": [
       "2*I"
      ]
     },
     "execution_count": 260,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(z1*z2).subs(x,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 261,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sqrt{3}}{2} + \\frac{3 i}{2}$"
      ],
      "text/plain": [
       "-sqrt(3)/2 + 3*I/2"
      ]
     },
     "execution_count": 261,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(z1*z2).subs(x,pi/3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2$"
      ],
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 242,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z1.subs(x,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle i$"
      ],
      "text/plain": [
       "I"
      ]
     },
     "execution_count": 244,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z2.subs(x,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 262,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle -1$"
      ],
      "text/plain": [
       "-1"
      ]
     },
     "execution_count": 262,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z1.subs(x,2*pi/3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 263,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{3}}{2} - \\frac{i}{2}$"
      ],
      "text/plain": [
       "sqrt(3)/2 - I/2"
      ]
     },
     "execution_count": 263,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z2.subs(x,2*pi/3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 264,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{3}}{2} + \\frac{i}{2} + \\sqrt{3} i$"
      ],
      "text/plain": [
       "sqrt(3)/2 + I/2 + sqrt(3)*I"
      ]
     },
     "execution_count": 264,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(z1+z2).subs(x,pi/3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 265,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{2 - \\sqrt{3}}$"
      ],
      "text/plain": [
       "sqrt(2 - sqrt(3))"
      ]
     },
     "execution_count": 265,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Abs(z1+z2).subs(x,2*pi/3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{2} \\left(-1 + \\sqrt{3}\\right)}{2}$"
      ],
      "text/plain": [
       "sqrt(2)*(-1 + sqrt(3))/2"
      ]
     },
     "execution_count": 267,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nsimplify(_,[sqrt(2)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 254,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sqrt{2}}{2} + \\frac{\\sqrt{6}}{2}$"
      ],
      "text/plain": [
       "-sqrt(2)/2 + sqrt(6)/2"
      ]
     },
     "execution_count": 254,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 251,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on function nsimplify in module sympy.simplify.simplify:\n",
      "\n",
      "nsimplify(expr, constants=(), tolerance=None, full=False, rational=None, rational_conversion='base10')\n",
      "    Find a simple representation for a number or, if there are free symbols or\n",
      "    if ``rational=True``, then replace Floats with their Rational equivalents. If\n",
      "    no change is made and rational is not False then Floats will at least be\n",
      "    converted to Rationals.\n",
      "    \n",
      "    Explanation\n",
      "    ===========\n",
      "    \n",
      "    For numerical expressions, a simple formula that numerically matches the\n",
      "    given numerical expression is sought (and the input should be possible\n",
      "    to evalf to a precision of at least 30 digits).\n",
      "    \n",
      "    Optionally, a list of (rationally independent) constants to\n",
      "    include in the formula may be given.\n",
      "    \n",
      "    A lower tolerance may be set to find less exact matches. If no tolerance\n",
      "    is given then the least precise value will set the tolerance (e.g. Floats\n",
      "    default to 15 digits of precision, so would be tolerance=10**-15).\n",
      "    \n",
      "    With ``full=True``, a more extensive search is performed\n",
      "    (this is useful to find simpler numbers when the tolerance\n",
      "    is set low).\n",
      "    \n",
      "    When converting to rational, if rational_conversion='base10' (the default), then\n",
      "    convert floats to rationals using their base-10 (string) representation.\n",
      "    When rational_conversion='exact' it uses the exact, base-2 representation.\n",
      "    \n",
      "    Examples\n",
      "    ========\n",
      "    \n",
      "    >>> from sympy import nsimplify, sqrt, GoldenRatio, exp, I, pi\n",
      "    >>> nsimplify(4/(1+sqrt(5)), [GoldenRatio])\n",
      "    -2 + 2*GoldenRatio\n",
      "    >>> nsimplify((1/(exp(3*pi*I/5)+1)))\n",
      "    1/2 - I*sqrt(sqrt(5)/10 + 1/4)\n",
      "    >>> nsimplify(I**I, [pi])\n",
      "    exp(-pi/2)\n",
      "    >>> nsimplify(pi, tolerance=0.01)\n",
      "    22/7\n",
      "    \n",
      "    >>> nsimplify(0.333333333333333, rational=True, rational_conversion='exact')\n",
      "    6004799503160655/18014398509481984\n",
      "    >>> nsimplify(0.333333333333333, rational=True)\n",
      "    1/3\n",
      "    \n",
      "    See Also\n",
      "    ========\n",
      "    \n",
      "    sympy.core.function.nfloat\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(nsimplify)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "A=Matrix([1,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "B=Matrix([-1,2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "C=(A-B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}2\\\\-1\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[ 2],\n",
       "[-1]])"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "C"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{5}$"
      ],
      "text/plain": [
       "sqrt(5)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqrt((C.T*C)[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}2\\end{matrix}\\right]^{\\frac{1}{2}}$"
      ],
      "text/plain": [
       "Matrix([[2]])**(1/2)"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqrt(A.T*A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}1\\end{matrix}\\right]^{\\frac{1}{2}}$"
      ],
      "text/plain": [
       "Matrix([[1]])**(1/2)"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqrt(C.T*A)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "%aimport geometry3D.frustum_cone\n",
    "from geometry3D.frustum_cone import FrustumCone"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "test=FrustumCone(1,2,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "geometry3D.frustum_cone.FrustumCone"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 5 \\pi + 3 \\sqrt{5} \\pi$"
      ],
      "text/plain": [
       "5*pi + 3*sqrt(5)*pi"
      ]
     },
     "execution_count": 222,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.surface_area"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(\\cos{\\left(x \\right)} + 1\\right) \\cos{\\left(x \\right)} + \\frac{\\cos{\\left(x \\right)}}{2} - \\frac{1}{2}$"
      ],
      "text/plain": [
       "(cos(x) + 1)*cos(x) + cos(x)/2 - 1/2"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cos(x)*(cos(x)+1)+(cos(x)-1)*1/S(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\cos^{2}{\\left(x \\right)} + \\frac{3 \\cos{\\left(x \\right)}}{2} - 1$"
      ],
      "text/plain": [
       "cos(x)**2 + 3*cos(x)/2 - 1"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand(expr)-1/S(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{-2, \\frac{1}{2}\\right\\}$"
      ],
      "text/plain": [
       "{-2, 1/2}"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(_,cos(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 268,
   "metadata": {},
   "outputs": [],
   "source": [
    "A=Matrix([1,3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "metadata": {},
   "outputs": [],
   "source": [
    "B=Matrix([-2,4])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 270,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}-1\\\\7\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[-1],\n",
       "[ 7]])"
      ]
     },
     "execution_count": 270,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A+B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}3\\\\-1\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[ 3],\n",
       "[-1]])"
      ]
     },
     "execution_count": 271,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A-B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 272,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 5 \\sqrt{2}$"
      ],
      "text/plain": [
       "5*sqrt(2)"
      ]
     },
     "execution_count": 272,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Vec(A+B).modulus"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{10}$"
      ],
      "text/plain": [
       "sqrt(10)"
      ]
     },
     "execution_count": 273,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Vec(A-B).modulus"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 5 \\sqrt{2}$"
      ],
      "text/plain": [
       "5*sqrt(2)"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqrt(((A+B).T*(A+B))[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{10}$"
      ],
      "text/plain": [
       "sqrt(10)"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqrt(((A-B).T*(A-B))[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A.shape==B.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{acos}{\\left(- \\frac{\\sqrt{5}}{5} \\right)}$"
      ],
      "text/plain": [
       "acos(-sqrt(5)/5)"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Vec(A+B).angle(Vec(A-B))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 10 - 10 t$"
      ],
      "text/plain": [
       "10 - 10*t"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Vec(A)*Vec(A-t*B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}3\\\\9\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[3],\n",
       "[9]])"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Vec(A)*3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "metadata": {},
   "outputs": [],
   "source": [
    "a,m=symbols(\"a,m\",real=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 275,
   "metadata": {},
   "outputs": [],
   "source": [
    "z1=a**2+(2-a)*I"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 276,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle a^{2} + i \\left(2 - a\\right)$"
      ],
      "text/plain": [
       "a**2 + I*(2 - a)"
      ]
     },
     "execution_count": 276,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 277,
   "metadata": {},
   "outputs": [],
   "source": [
    "z2=-1+(3-2*a)*I"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 278,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle i \\left(3 - 2 a\\right) - 1$"
      ],
      "text/plain": [
       "I*(3 - 2*a) - 1"
      ]
     },
     "execution_count": 278,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "metadata": {},
   "outputs": [],
   "source": [
    "z3=2-m*I"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 280,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - i m + 2$"
      ],
      "text/plain": [
       "-I*m + 2"
      ]
     },
     "execution_count": 280,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 281,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle a^{2} - i \\left(2 - a\\right) + i \\left(3 - 2 a\\right) - 1$"
      ],
      "text/plain": [
       "a**2 - I*(2 - a) + I*(3 - 2*a) - 1"
      ]
     },
     "execution_count": 281,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "conjugate(z1)+z2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 282,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle a^{2} - i a - 1 + i$"
      ],
      "text/plain": [
       "a**2 - I*a - 1 + I"
      ]
     },
     "execution_count": 282,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 283,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(a**2 - 1, 1 - a)"
      ]
     },
     "execution_count": 283,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "_.as_real_imag()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 284,
   "metadata": {},
   "outputs": [],
   "source": [
    "t=symbols(\"t\",real=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 286,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 1 + 3 i$"
      ],
      "text/plain": [
       "1 + 3*I"
      ]
     },
     "execution_count": 286,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z1.subs(a,-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 287,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle -1 + 5 i$"
      ],
      "text/plain": [
       "-1 + 5*I"
      ]
     },
     "execution_count": 287,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z2.subs(a,-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 288,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - i m + 2$"
      ],
      "text/plain": [
       "-I*m + 2"
      ]
     },
     "execution_count": 288,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z3.subs(a,-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 285,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - t \\left(i m - 1 + 3 i\\right) + 2 - 2 i$"
      ],
      "text/plain": [
       "-t*(I*m - 1 + 3*I) + 2 - 2*I"
      ]
     },
     "execution_count": 285,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "((z1-z2)-t*(z1-z3)).subs(a,-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(t + 2, -t*(m + 3) - 2)"
      ]
     },
     "execution_count": 182,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_).as_real_imag()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{\\left( -2, \\  -2\\right)\\right\\}$"
      ],
      "text/plain": [
       "{(-2, -2)}"
      ]
     },
     "execution_count": 183,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nonlinsolve(_,[t,m])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=expand_trig(cos(2*x)+1/S(3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 \\cos^{2}{\\left(x \\right)} - \\frac{2}{3}$"
      ],
      "text/plain": [
       "2*cos(x)**2 - 2/3"
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{- \\frac{\\sqrt{3}}{3}, \\frac{\\sqrt{3}}{3}\\right\\}$"
      ],
      "text/plain": [
       "{-sqrt(3)/3, sqrt(3)/3}"
      ]
     },
     "execution_count": 186,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(_,cos(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sin{\\left(\\frac{\\pi}{6} + \\operatorname{acos}{\\left(\\frac{\\sqrt{3}}{3} \\right)} \\right)}$"
      ],
      "text/plain": [
       "sin(pi/6 + acos(sqrt(3)/3))"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sin(pi/6+acos(1/sqrt(3)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{3}}{6} + \\frac{\\sqrt{2}}{2}$"
      ],
      "text/plain": [
       "sqrt(3)/6 + sqrt(2)/2"
      ]
     },
     "execution_count": 190,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trigsimp(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 \\sqrt{6} \\left(\\frac{\\sqrt{3}}{6} + \\frac{\\sqrt{2}}{2}\\right)$"
      ],
      "text/plain": [
       "2*sqrt(6)*(sqrt(3)/6 + sqrt(2)/2)"
      ]
     },
     "execution_count": 191,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqrt(6)/sin(pi/6)*_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 192,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{2} + 2 \\sqrt{3}$"
      ],
      "text/plain": [
       "sqrt(2) + 2*sqrt(3)"
      ]
     },
     "execution_count": 192,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 289,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[autoreload of basic_package.vec failed: Traceback (most recent call last):\n",
      "  File \"/home/huang/anaconda3/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 245, in check\n",
      "    superreload(m, reload, self.old_objects)\n",
      "  File \"/home/huang/anaconda3/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 410, in superreload\n",
      "    update_generic(old_obj, new_obj)\n",
      "  File \"/home/huang/anaconda3/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 347, in update_generic\n",
      "    update(a, b)\n",
      "  File \"/home/huang/anaconda3/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 317, in update_class\n",
      "    update_instances(old, new)\n",
      "  File \"/home/huang/anaconda3/lib/python3.9/site-packages/IPython/extensions/autoreload.py\", line 280, in update_instances\n",
      "    ref.__class__ = new\n",
      "TypeError: __class__ assignment: 'Vec' object layout differs from 'Vec'\n",
      "]\n"
     ]
    }
   ],
   "source": [
    "tri=Triangle(sas=(4,60,10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 290,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<svg xmlns=\"http://www.w3.org/2000/svg\"\n",
       "            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
       "            width=\"100.0\" height=\"100.0\" viewBox=\"-1.00000000000000 -1.00000000000000 12.0000000000000 5.46410161513775\"\n",
       "            preserveAspectRatio=\"xMinYMin meet\">\n",
       "            <defs>\n",
       "                <marker id=\"markerCircle\" markerWidth=\"8\" markerHeight=\"8\"\n",
       "                    refx=\"5\" refy=\"5\" markerUnits=\"strokeWidth\">\n",
       "                    <circle cx=\"5\" cy=\"5\" r=\"1.5\" style=\"stroke: none; fill:#000000;\"/>\n",
       "                </marker>\n",
       "                <marker id=\"markerArrow\" markerWidth=\"13\" markerHeight=\"13\" refx=\"2\" refy=\"4\"\n",
       "                       orient=\"auto\" markerUnits=\"strokeWidth\">\n",
       "                    <path d=\"M2,2 L2,6 L6,4\" style=\"fill: #000000;\" />\n",
       "                </marker>\n",
       "                <marker id=\"markerReverseArrow\" markerWidth=\"13\" markerHeight=\"13\" refx=\"6\" refy=\"4\"\n",
       "                       orient=\"auto\" markerUnits=\"strokeWidth\">\n",
       "                    <path d=\"M6,2 L6,6 L2,4\" style=\"fill: #000000;\" />\n",
       "                </marker>\n",
       "            </defs><g transform=\"matrix(1,0,0,-1,0,3.46410161513775)\"><path fill-rule=\"evenodd\" fill=\"#66cc99\" stroke=\"#555555\" stroke-width=\"0.240000000000000\" opacity=\"0.6\" d=\"M 0,0 L 10.0000000000000,0 L 2.00000000000000,3.46410161513775 z\" /></g></svg>"
      ],
      "text/latex": [
       "$\\displaystyle \\operatorname{Triangle}\\left(\\operatorname{Point2D}\\left(0, 0\\right), \\operatorname{Point2D}\\left(10, 0\\right), \\operatorname{Point2D}\\left(2, 2 \\sqrt{3}\\right)\\right)$"
      ],
      "text/plain": [
       "Triangle(Point2D(0, 0), Point2D(10, 0), Point2D(2, 2*sqrt(3)))"
      ]
     },
     "execution_count": 290,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tri"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 291,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{Point2D(2, 2*sqrt(3)): acos(-sqrt(19)/38),\n",
       " Point2D(0, 0): pi/3,\n",
       " Point2D(10, 0): acos(4*sqrt(19)/19)}"
      ]
     },
     "execution_count": 291,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tri.angles"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 292,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(Point2D(0, 0), Point2D(10, 0), Point2D(2, 2*sqrt(3)))"
      ]
     },
     "execution_count": 292,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tri.vertices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 293,
   "metadata": {},
   "outputs": [],
   "source": [
    "A,C,B=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 294,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(0, 0\\right)$"
      ],
      "text/plain": [
       "Point2D(0, 0)"
      ]
     },
     "execution_count": 294,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 295,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(2, 2 \\sqrt{3}\\right)$"
      ],
      "text/plain": [
       "Point2D(2, 2*sqrt(3))"
      ]
     },
     "execution_count": 295,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 296,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(10, 0\\right)$"
      ],
      "text/plain": [
       "Point2D(10, 0)"
      ]
     },
     "execution_count": 296,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "C"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 297,
   "metadata": {},
   "outputs": [],
   "source": [
    "M=(B+C)/2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 298,
   "metadata": {},
   "outputs": [],
   "source": [
    "N=(A+C)/2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 299,
   "metadata": {},
   "outputs": [],
   "source": [
    "P,=Intersection(Line(A,M),Line(B,N))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 300,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{Point2D}\\left(4, \\frac{2 \\sqrt{3}}{3}\\right)$"
      ],
      "text/plain": [
       "Point2D(4, 2*sqrt(3)/3)"
      ]
     },
     "execution_count": 300,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "P"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{acos}{\\left(\\frac{4 \\sqrt{91}}{91} \\right)}$"
      ],
      "text/plain": [
       "acos(4*sqrt(91)/91)"
      ]
     },
     "execution_count": 208,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Triangle(M,P,N).angles[P]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 301,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{39}$"
      ],
      "text/plain": [
       "sqrt(39)"
      ]
     },
     "execution_count": 301,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A.distance(M)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 302,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sqrt{21}$"
      ],
      "text/plain": [
       "sqrt(21)"
      ]
     },
     "execution_count": 302,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B.distance(N)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 304,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 3 \\sqrt{91}$"
      ],
      "text/plain": [
       "3*sqrt(91)"
      ]
     },
     "execution_count": 304,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A.distance(M)*B.distance(N)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [],
   "source": [
    "A,B,C=symbols(\"A,B,C\",real=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq=Eq(sqrt(3)*sin(B)*cos(A)+sin(A)*sin(B),sqrt(3)*sin(C))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sin{\\left(A \\right)} \\sin{\\left(B \\right)} + \\sqrt{3} \\sin{\\left(B \\right)} \\cos{\\left(A \\right)} = \\sqrt{3} \\sin{\\left(C \\right)}$"
      ],
      "text/plain": [
       "Eq(sin(A)*sin(B) + sqrt(3)*sin(B)*cos(A), sqrt(3)*sin(C))"
      ]
     },
     "execution_count": 211,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sin{\\left(A \\right)} \\sin{\\left(B \\right)} + \\sqrt{3} \\sin{\\left(B \\right)} \\cos{\\left(A \\right)} = \\sqrt{3} \\sin{\\left(A + B \\right)}$"
      ],
      "text/plain": [
       "Eq(sin(A)*sin(B) + sqrt(3)*sin(B)*cos(A), sqrt(3)*sin(A + B))"
      ]
     },
     "execution_count": 212,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq.subs(sin(C),sin(A+B))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq1=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\sqrt{3} \\left(\\sin{\\left(A \\right)} \\cos{\\left(B \\right)} + \\sin{\\left(B \\right)} \\cos{\\left(A \\right)}\\right) + \\sin{\\left(A \\right)} \\sin{\\left(B \\right)} + \\sqrt{3} \\sin{\\left(B \\right)} \\cos{\\left(A \\right)}$"
      ],
      "text/plain": [
       "-sqrt(3)*(sin(A)*cos(B) + sin(B)*cos(A)) + sin(A)*sin(B) + sqrt(3)*sin(B)*cos(A)"
      ]
     },
     "execution_count": 215,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand_trig(simplify_equation(eq1,expr=True))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {},
   "outputs": [],
   "source": [
    "answer=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - 2 \\sin{\\left(A \\right)} \\cos{\\left(B + \\frac{\\pi}{6} \\right)}$"
      ],
      "text/plain": [
       "-2*sin(A)*cos(B + pi/6)"
      ]
     },
     "execution_count": 217,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trigsimp(answer)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq=Eq(4*a**2,(4*b+c)*b+c*(4*c+b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 a^{2} = b \\left(4 b + c\\right) + c \\left(b + 4 c\\right)$"
      ],
      "text/plain": [
       "Eq(4*a**2, b*(4*b + c) + c*(b + 4*c))"
      ]
     },
     "execution_count": 219,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 a^{2} - b \\left(4 b + c\\right) - c \\left(b + 4 c\\right)$"
      ],
      "text/plain": [
       "4*a**2 - b*(4*b + c) - c*(b + 4*c)"
      ]
     },
     "execution_count": 220,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify_equation(eq,expr=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle a^{2} - b^{2} - \\frac{b c}{2} - c^{2}$"
      ],
      "text/plain": [
       "a**2 - b**2 - b*c/2 - c**2"
      ]
     },
     "execution_count": 221,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand(_)/4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "per=Piecewise((sin(x),sin(x)>=cos(x)),(cos(x),True))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\begin{cases} \\sin{\\left(x \\right)} & \\text{for}\\: \\sin{\\left(x \\right)} \\geq \\cos{\\left(x \\right)} \\\\\\cos{\\left(x \\right)} & \\text{otherwise} \\end{cases}$"
      ],
      "text/plain": [
       "Piecewise((sin(x), sin(x) >= cos(x)), (cos(x), True))"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "per"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x798b90fc6730>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(per,(x,-2*pi,pi*2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "m,n=symbols(\"m,n\",real=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=x**2+m*x+n\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle m x + n + x^{2}$"
      ],
      "text/plain": [
       "m*x + n + x**2"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle m \\left(1 + 2 i\\right) + n + \\left(1 + 2 i\\right)^{2}$"
      ],
      "text/plain": [
       "m*(1 + 2*I) + n + (1 + 2*I)**2"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr.subs(x,1+2*I)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(m + n - 3, 2*m + 4)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(expr.subs(x,1+2*I)).as_real_imag()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{\\left( -2, \\  5\\right)\\right\\}$"
      ],
      "text/plain": [
       "{(-2, 5)}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "linsolve(_,[m,n])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/huang/anaconda3/lib/python3.9/site-packages/sympy/geometry/point.py:312: UserWarning: Dimension of (0, 0) needs to be changed from 2 to 3.\n",
      "  return [Point(i, **kwargs) for i in points]\n"
     ]
    }
   ],
   "source": [
    "tetra=Tetrahedron(8/sqrt(3),RegularPolygon(Point(0,0),4*sqrt(2)/sqrt(3),3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left( \\operatorname{Point3D}\\left(0, 0, \\frac{8 \\sqrt{3}}{3}\\right), \\  \\operatorname{Point3D}\\left(\\frac{4 \\sqrt{6}}{3}, 0, 0\\right), \\  \\operatorname{Point3D}\\left(- \\frac{2 \\sqrt{6}}{3}, 2 \\sqrt{2}, 0\\right), \\  \\operatorname{Point3D}\\left(- \\frac{2 \\sqrt{6}}{3}, - 2 \\sqrt{2}, 0\\right)\\right)$"
      ],
      "text/plain": [
       "(Point3D(0, 0, 8*sqrt(3)/3), Point3D(4*sqrt(6)/3, 0, 0), Point3D(-2*sqrt(6)/3, 2*sqrt(2), 0), Point3D(-2*sqrt(6)/3, -2*sqrt(2), 0))"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tetra.vertices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "A,B,C,D=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 \\sqrt{2}$"
      ],
      "text/plain": [
       "4*sqrt(2)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A.distance(B)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 \\sqrt{2}$"
      ],
      "text/plain": [
       "4*sqrt(2)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B.distance(C)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 \\sqrt{2}$"
      ],
      "text/plain": [
       "4*sqrt(2)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A.distance(D)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 48 \\pi$"
      ],
      "text/plain": [
       "48*pi"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tetra.circumsphere.surface_area"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "a,b,c=symbols(\"a,b,c\",positive=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "eq=Eq(4*a**2,(4*b+c)*b+c*(4*c+b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 a^{2} = b \\left(4 b + c\\right) + c \\left(b + 4 c\\right)$"
      ],
      "text/plain": [
       "Eq(4*a**2, b*(4*b + c) + c*(b + 4*c))"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 a^{2} - b \\left(4 b + c\\right) - c \\left(b + 4 c\\right)$"
      ],
      "text/plain": [
       "4*a**2 - b*(4*b + c) - c*(b + 4*c)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify_equation(eq,expr=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 a^{2} - 4 b^{2} - 2 b c - 4 c^{2}$"
      ],
      "text/plain": [
       "4*a**2 - 4*b**2 - 2*b*c - 4*c**2"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(expand(_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle a^{2} - b^{2} - \\frac{b c}{2} - c^{2}$"
      ],
      "text/plain": [
       "a**2 - b**2 - b*c/2 - c**2"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "_/4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{15}}{4}$"
      ],
      "text/plain": [
       "sqrt(15)/4"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sqrt(1-(1/S(4))**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "D=Point(0,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "B=Point(x,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "A=Point(0,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "C=Point(2*cos(pi/3),2*sin(pi/3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "%aimport basic_package.vec\n",
    "from basic_package.vec import Vec"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "va=Vec(Matrix([D-C]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "vb=Vec(Matrix([B-C]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\operatorname{acos}{\\left(\\frac{- x - \\sqrt{3} \\left(y - \\sqrt{3}\\right) + 1}{\\sqrt{\\left(x - 1\\right)^{2} + 3} \\sqrt{\\left(y - \\sqrt{3}\\right)^{2} + 1}} \\right)}$"
      ],
      "text/plain": [
       "acos((-x - sqrt(3)*(y - sqrt(3)) + 1)/(sqrt((x - 1)**2 + 3)*sqrt((y - sqrt(3))**2 + 1)))"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "va.angle(vb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{1}{2} + \\frac{- x - \\sqrt{3} \\left(y - \\sqrt{3}\\right) + 1}{\\sqrt{\\left(x - 1\\right)^{2} + 3} \\sqrt{\\left(y - \\sqrt{3}\\right)^{2} + 1}}$"
      ],
      "text/plain": [
       "1/2 + (-x - sqrt(3)*(y - sqrt(3)) + 1)/(sqrt((x - 1)**2 + 3)*sqrt((y - sqrt(3))**2 + 1))"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cos(_)+1/S(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\mathbb{R} \\cap \\left\\{\\frac{\\sqrt{3} \\left(- x^{2} - 2 x + 12\\right)}{- x^{2} + 2 x + 8} - \\frac{\\sqrt{3} \\sqrt{x^{4} - 4 x^{3} + 12 x^{2} - 16 x + 16}}{- x^{2} + 2 x + 8}, \\frac{\\sqrt{3} \\left(- x^{2} - 2 x + 12\\right)}{- x^{2} + 2 x + 8} + \\frac{\\sqrt{3} \\sqrt{x^{4} - 4 x^{3} + 12 x^{2} - 16 x + 16}}{- x^{2} + 2 x + 8}\\right\\}$"
      ],
      "text/plain": [
       "Intersection({sqrt(3)*(-x**2 - 2*x + 12)/(-x**2 + 2*x + 8) - sqrt(3)*sqrt(x**4 - 4*x**3 + 12*x**2 - 16*x + 16)/(-x**2 + 2*x + 8), sqrt(3)*(-x**2 - 2*x + 12)/(-x**2 + 2*x + 8) + sqrt(3)*sqrt(x**4 - 4*x**3 + 12*x**2 - 16*x + 16)/(-x**2 + 2*x + 8)}, Reals)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(expr,y,Reals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sqrt{3}}{\\cos{\\left(x + \\frac{\\pi}{3} \\right)}} + \\frac{1}{\\sin{\\left(x \\right)}}$"
      ],
      "text/plain": [
       "-sqrt(3)/cos(x + pi/3) + 1/sin(x)"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1/sin(x)+sqrt(3)/cos(2*pi/3-x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{1}{\\sin{\\left(x \\right)}} - \\frac{\\sqrt{3}}{- \\frac{\\sqrt{3} \\sin{\\left(x \\right)}}{2} + \\frac{\\cos{\\left(x \\right)}}{2}}$"
      ],
      "text/plain": [
       "1/sin(x) - sqrt(3)/(-sqrt(3)*sin(x)/2 + cos(x)/2)"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand_trig(expr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "ename": "NotImplementedError",
     "evalue": "Unable to find critical points for 1/sin(x) - sqrt(3)/(-sqrt(3)*sin(x)/2 + cos(x)/2)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNotImplementedError\u001b[0m                       Traceback (most recent call last)",
      "\u001b[0;32m/tmp/ipykernel_5485/1518906829.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfunction_range\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mInterval\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpi\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mpi\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m~/anaconda3/lib/python3.9/site-packages/sympy/calculus/util.py\u001b[0m in \u001b[0;36mfunction_range\u001b[0;34m(f, symbol, domain)\u001b[0m\n\u001b[1;32m    197\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    198\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0miterable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msolution\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 199\u001b[0;31m                 raise NotImplementedError(\n\u001b[0m\u001b[1;32m    200\u001b[0m                         'Unable to find critical points for {}'.format(f))\n\u001b[1;32m    201\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msolution\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mImageSet\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mNotImplementedError\u001b[0m: Unable to find critical points for 1/sin(x) - sqrt(3)/(-sqrt(3)*sin(x)/2 + cos(x)/2)"
     ]
    }
   ],
   "source": [
    "function_range(_,x,Interval.open(pi/6,5*pi/6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sqrt{3}}{\\cos{\\left(x + \\frac{\\pi}{3} \\right)}} + \\frac{1}{\\sin{\\left(x \\right)}}$"
      ],
      "text/plain": [
       "-sqrt(3)/cos(x + pi/3) + 1/sin(x)"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x736b32a887c0>"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(expr,aspect_ratio=(1,1),ylim=(0,8),xlim=(pi/6,5*pi/6),axis_center=(0,0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sqrt{3} \\sin^{2}{\\left(x \\right)} \\sin{\\left(x + \\frac{\\pi}{3} \\right)} + \\cos{\\left(x \\right)} \\cos^{2}{\\left(x + \\frac{\\pi}{3} \\right)}}{\\sin^{2}{\\left(x \\right)} \\cos^{2}{\\left(x + \\frac{\\pi}{3} \\right)}}$"
      ],
      "text/plain": [
       "-(sqrt(3)*sin(x)**2*sin(x + pi/3) + cos(x)*cos(x + pi/3)**2)/(sin(x)**2*cos(x + pi/3)**2)"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(diff(expr,x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x736b3298f340>"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(_,aspect_ratio=(1,1),ylim=(-3,3),xlim=(0.5,2.5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(\\frac{\\sqrt{3} \\sin{\\left(x \\right)}}{2} + \\frac{\\cos{\\left(x \\right)}}{2}\\right) \\sin{\\left(x \\right)}$"
      ],
      "text/plain": [
       "(sqrt(3)*sin(x)/2 + cos(x)/2)*sin(x)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand_trig(sin(pi*5/6-x)*sin(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\cos{\\left(2 x + \\frac{\\pi}{6} \\right)}}{2} + \\frac{\\sqrt{3}}{4}$"
      ],
      "text/plain": [
       "-cos(2*x + pi/6)/2 + sqrt(3)/4"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trigsimp(expr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sin{\\left(2 x + \\frac{2 \\pi}{3} \\right)}}{2} + \\frac{\\sqrt{3}}{4}$"
      ],
      "text/plain": [
       "-sin(2*x + 2*pi/3)/2 + sqrt(3)/4"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "_.rewrite(sin)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(0, \\left(\\frac{\\sqrt{2}}{4} + \\frac{\\sqrt{6}}{4}\\right) \\left(- \\frac{\\sqrt{2}}{8} + \\frac{\\sqrt{6}}{8} + \\frac{\\sqrt{3} \\left(\\frac{\\sqrt{2}}{4} + \\frac{\\sqrt{6}}{4}\\right)}{2}\\right)\\right]$"
      ],
      "text/plain": [
       "Interval.Lopen(0, (sqrt(2)/4 + sqrt(6)/4)*(-sqrt(2)/8 + sqrt(6)/8 + sqrt(3)*(sqrt(2)/4 + sqrt(6)/4)/2))"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_range(expr,x,Interval.open(0,2*pi/3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(\\frac{\\sqrt{2}}{4} + \\frac{\\sqrt{6}}{4}\\right) \\left(- \\frac{\\sqrt{2}}{8} + \\frac{\\sqrt{6}}{8} + \\frac{\\sqrt{3} \\left(\\frac{\\sqrt{2}}{4} + \\frac{\\sqrt{6}}{4}\\right)}{2}\\right)$"
      ],
      "text/plain": [
       "(sqrt(2)/4 + sqrt(6)/4)*(-sqrt(2)/8 + sqrt(6)/8 + sqrt(3)*(sqrt(2)/4 + sqrt(6)/4)/2)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "_.sup"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{3}}{4} + \\frac{1}{2}$"
      ],
      "text/plain": [
       "sqrt(3)/4 + 1/2"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nsimplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3}{4 \\left(\\frac{\\sqrt{3}}{4} + \\frac{1}{2}\\right)}$"
      ],
      "text/plain": [
       "3/(4*(sqrt(3)/4 + 1/2))"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1/_*3/4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 6 - 3 \\sqrt{3}$"
      ],
      "text/plain": [
       "6 - 3*sqrt(3)"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nsimplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.5848931924611136"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "10**(1/5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 吉安高二下学期期末教学质量检测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=2*x+cos(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 x + \\cos{\\left(x \\right)}$"
      ],
      "text/plain": [
       "2*x + cos(x)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 1$"
      ],
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff(expr,x).subs(x,pi/2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy.abc import sigma"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sigma$"
      ],
      "text/plain": [
       "sigma"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sigma"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "t=symbols(\"t\",positive=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=Normal(\"X\",2,sqrt(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 0.00024993890652326$"
      ],
      "text/plain": [
       "0.000249938906523260"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N(P(X>1)-0.76)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\operatorname{erf}{\\left(\\frac{1}{2} \\right)}}{2}$"
      ],
      "text/plain": [
       "erf(1/2)/2"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "P(And(2<X,X<3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 0.260249938906523$"
      ],
      "text/plain": [
       "0.260249938906523"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "N(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "a,b,c=symbols(\"a,b,c\",real=true)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=-x**3/6+a*x**2-2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle a x^{2} - \\frac{x^{3}}{6} - 2$"
      ],
      "text/plain": [
       "a*x**2 - x**3/6 - 2"
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{2\\right\\}$"
      ],
      "text/plain": [
       "{2}"
      ]
     },
     "execution_count": 165,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(expr.subs(x,3)-23/S(2),a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{x \\left(x - 8\\right)}{2}$"
      ],
      "text/plain": [
       "-x*(x - 8)/2"
      ]
     },
     "execution_count": 168,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(diff(expr.subs(a,2),x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(-\\infty, \\infty\\right)$"
      ],
      "text/plain": [
       "Interval(-oo, oo)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_range(expr.subs(a,2),x,Reals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\infty$"
      ],
      "text/plain": [
       "oo"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "maximum(expr.subs(a,2),x,Reals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr_a=expr.subs(a,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{x^{3}}{6} + 2 x^{2} - 2$"
      ],
      "text/plain": [
       "-x**3/6 + 2*x**2 - 2"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr_a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{23}{2}$"
      ],
      "text/plain": [
       "23/2"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr_a.subs(x,3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x73eb5e5f1d00>"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(expr_a,(x,0,10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'+': [Interval.open(0, 8)],\n",
       " '-': [Interval.open(-oo, 0), Interval.open(8, oo)]}"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_monotonyset(expr.subs(a,2),x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{122}{3}$"
      ],
      "text/plain": [
       "122/3"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr.subs(a,2).subs(x,8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "sn=a*2**n+b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2^{n} a + b$"
      ],
      "text/plain": [
       "2**n*a + b"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2^{n} a - 2^{n - 1} a$"
      ],
      "text/plain": [
       "2**n*a - 2**(n - 1)*a"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sn-sn.subs(n,n-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2^{n - 1} a$"
      ],
      "text/plain": [
       "2**(n - 1)*a"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{a \\left(2^{n + 1} - 4\\right)}{2} + 2 a + b$"
      ],
      "text/plain": [
       "a*(2**(n + 1) - 4)/2 + 2*a + b"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "summation(_,(n,2,n))+2*a+b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2^{n} a + b$"
      ],
      "text/plain": [
       "2**n*a + b"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - 2 a - 2 b$"
      ],
      "text/plain": [
       "-2*a - 2*b"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "2*a-2*(2*a+b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "n=symbols(\"n\",positive=True,integer=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n.is_integer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n in Naturals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "m=Matrix([[4/S(5)*n,1/S(5)*n],[1/S(4)*2*n,3/S(4)*2*n]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}\\frac{4 n}{5} & \\frac{n}{5}\\\\\\frac{n}{2} & \\frac{3 n}{2}\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[4*n/5,   n/5],\n",
       "[  n/2, 3*n/2]])"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "%aimport excel_function_package\n",
    "from excel_function_package.chi_square_test import ChiSquaredTest,chi_squared_of_error_probability\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "chitest=ChiSquaredTest(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}\\frac{4 n}{5} & \\frac{n}{5} & n\\\\\\frac{n}{2} & \\frac{3 n}{2} & 2 n\\\\\\frac{13 n}{10} & \\frac{17 n}{10} & 3 n\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[  4*n/5,     n/5,   n],\n",
       "[    n/2,   3*n/2, 2*n],\n",
       "[13*n/10, 17*n/10, 3*n]])"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chitest.expand_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}8 & 2 & 10\\\\5 & 15 & 20\\\\13 & 17 & 30\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[ 8,  2, 10],\n",
       "[ 5, 15, 20],\n",
       "[13, 17, 30]])"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chitest.expand_matrix.subs(n,10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8212669683257918"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "363/442"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8.048780487804878"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "6.6/0.82"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{363 n}{442}$"
      ],
      "text/plain": [
       "363*n/442"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chitest.chi_squared_value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left\\{9, 10, \\ldots\\right\\}$"
      ],
      "text/plain": [
       "Range(9, oo, 1)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "solveset(_>chi_squared_of_error_probability(0.01),n,Naturals)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.70554345409542\n",
      "3.84145882069412\n",
      "6.63489660102121\n",
      "7.87943857662242\n",
      "10.8275661706627\n"
     ]
    }
   ],
   "source": [
    "for num in  [0.1,0.05,0.01,0.005,0.001]:\n",
    "    print(chi_squared_of_error_probability(num))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr_f=2+ln(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\log{\\left(x \\right)} + 2$"
      ],
      "text/plain": [
       "log(x) + 2"
      ]
     },
     "execution_count": 173,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr_f"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr_g=exp(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle e^{x}$"
      ],
      "text/plain": [
       "exp(x)"
      ]
     },
     "execution_count": 175,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr_g"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle y = \\log{\\left(a \\right)} + 1 + \\frac{x}{a}$"
      ],
      "text/plain": [
       "Eq(y, log(a) + 1 + x/a)"
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_tangent(expr_f,x,a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle y = \\left(- b + x + 1\\right) e^{b}$"
      ],
      "text/plain": [
       "Eq(y, (-b + x + 1)*exp(b))"
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_tangent(expr_g,x,b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\left(- b + x + 1\\right) e^{b} + \\log{\\left(a \\right)} + 1 + \\frac{x}{a}$"
      ],
      "text/plain": [
       "-(-b + x + 1)*exp(b) + log(a) + 1 + x/a"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_tangent(expr_f,x,a).rhs-function_tangent(expr_g,x,b).rhs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "answer=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle b e^{b} + x \\left(- e^{b} + \\frac{1}{a}\\right) - e^{b} + \\log{\\left(a \\right)} + 1$"
      ],
      "text/plain": [
       "b*exp(b) + x*(-exp(b) + 1/a) - exp(b) + log(a) + 1"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "collect(expand(answer),x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle y = e x$"
      ],
      "text/plain": [
       "Eq(y, E*x)"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_tangent(expr_f,x,exp(-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle y = x + 1$"
      ],
      "text/plain": [
       "Eq(y, x + 1)"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_tangent(expr_f,x,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=Binomial(\"X\",4,p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sympy.stats import E"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 p$"
      ],
      "text/plain": [
       "4*p"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(E(X))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=Binomial(\"X\",4,1/S(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{5}{8}$"
      ],
      "text/plain": [
       "5/8"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "P(And(3/S(2)<X , X<11/S(3)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 1$"
      ],
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "variance(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 11$"
      ],
      "text/plain": [
       "11"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "E(4*X+3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle y = e x$"
      ],
      "text/plain": [
       "Eq(y, E*x)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "function_tangent(expr_f,x,exp(-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=Binomial(\"X\",6,1/S(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3}{32}$"
      ],
      "text/plain": [
       "3/32"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "P(Eq(X,5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=1/sin(x+pi/3)+1/sin(pi/3-x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{1}{\\cos{\\left(x + \\frac{\\pi}{6} \\right)}} + \\frac{1}{\\sin{\\left(x + \\frac{\\pi}{3} \\right)}}$"
      ],
      "text/plain": [
       "1/cos(x + pi/6) + 1/sin(x + pi/3)"
      ]
     },
     "execution_count": 183,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{1}{\\frac{\\sin{\\left(x \\right)}}{2} + \\frac{\\sqrt{3} \\cos{\\left(x \\right)}}{2}} + \\frac{1}{- \\frac{\\sin{\\left(x \\right)}}{2} + \\frac{\\sqrt{3} \\cos{\\left(x \\right)}}{2}}$"
      ],
      "text/plain": [
       "1/(sin(x)/2 + sqrt(3)*cos(x)/2) + 1/(-sin(x)/2 + sqrt(3)*cos(x)/2)"
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand_trig(expr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [],
   "source": [
    "check=simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{4 \\sqrt{3} \\cos{\\left(x \\right)}}{3 - 4 \\sin^{2}{\\left(x \\right)}}$"
      ],
      "text/plain": [
       "4*sqrt(3)*cos(x)/(3 - 4*sin(x)**2)"
      ]
     },
     "execution_count": 186,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x73eb5e67fdf0>"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(check,(x,-pi/6,pi/6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\frac{4 \\sqrt{3}}{3}, 3\\right)$"
      ],
      "text/plain": [
       "Interval.Ropen(4*sqrt(3)/3, 3)"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_range(check,x,Interval.open(-pi/6,pi/6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "Y=Binomial(\"Y\",4,1/S(4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0: 81/256, 1: 27/64, 2: 27/128, 3: 3/64, 4: 1/256}"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "density(Y).dict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [],
   "source": [
    "f=Function(\"f\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{1}{2} - \\frac{3^{- n}}{2}$"
      ],
      "text/plain": [
       "1/2 - 1/(2*3**n)"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rsolve(f(n)-f(n-1)+2*f(n)-1,f(n),{f(1):1/S(3)})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [],
   "source": [
    "sn=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{1}{2} - \\frac{3^{- n}}{2}$"
      ],
      "text/plain": [
       "1/2 - 1/(2*3**n)"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3^{1 - n}}{2} - \\frac{3^{- n}}{2}$"
      ],
      "text/plain": [
       "3**(1 - n)/2 - 1/(2*3**n)"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sn-sn.subs(n,n-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 3^{- n}$"
      ],
      "text/plain": [
       "3**(-n)"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{3 \\cdot 3^{- n - 1}}{2} - \\frac{1}{2} - \\frac{3^{- n} \\left(- 3 \\cdot 3^{n} + 2 n + 3\\right)}{2}$"
      ],
      "text/plain": [
       "3*3**(-n - 1)/2 - 1/2 - (-3*3**n + 2*n + 3)/(2*3**n)"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "summation((2*n-1)*3**(-n),(n,1,n))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 3^{- n} \\left(3^{n} - n - 1\\right)$"
      ],
      "text/plain": [
       "(3**n - n - 1)/3**n"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=exp(a*x)-exp(-x)-b*x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - b x + e^{a x} - e^{- x}$"
      ],
      "text/plain": [
       "-b*x + exp(a*x) - exp(-x)"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle a e^{a x} - b + e^{- x}$"
      ],
      "text/plain": [
       "a*exp(a*x) - b + exp(-x)"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff(expr,x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [],
   "source": [
    "check=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - b + e^{x} + e^{- x}$"
      ],
      "text/plain": [
       "-b + exp(x) + exp(-x)"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check.subs(a,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle a e^{a x} - a - 1 + e^{- x}$"
      ],
      "text/plain": [
       "a*exp(a*x) - a - 1 + exp(-x)"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check.subs(b,a+1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle a^{2} e^{a x} - e^{- x}$"
      ],
      "text/plain": [
       "a**2*exp(a*x) - exp(-x)"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff(_,x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [],
   "source": [
    "aver_x=9.9/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [],
   "source": [
    "aver_y=7.1/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2.117$"
      ],
      "text/plain": [
       "2.11700000000000"
      ]
     },
     "execution_count": 189,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "S(9.146-10*aver_x*aver_y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2.607$"
      ],
      "text/plain": [
       "2.60700000000000"
      ]
     },
     "execution_count": 190,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "S(12.408-10*aver_x**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [],
   "source": [
    "check_b=(9.146-10*aver_x*aver_y)/(12.408-10*aver_x**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8120444955888"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check_b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [],
   "source": [
    "check_a=aver_y-check_b*aver_x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.09392405063291198"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check_a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.99, 0.71)"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "aver_x,aver_y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.71"
      ]
     },
     "execution_count": 199,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "aver_y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6.795"
      ]
     },
     "execution_count": 198,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(7.1-0.305)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.04892405063291194"
      ]
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "0.755-check_b*aver_x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=x**2*exp(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle x^{2} e^{x}$"
      ],
      "text/plain": [
       "x**2*exp(x)"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'+': [Interval.open(-oo, -2), Interval.open(0, oo)],\n",
       " '-': [Interval.open(-2, 0)]}"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function_monotonyset(expr,x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x73eb42564c10>"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(expr,(x,-6,1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [],
   "source": [
    "check=expr-k*x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - k x + x^{2} e^{x}$"
      ],
      "text/plain": [
       "-k*x + x**2*exp(x)"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - k + x^{2} e^{x} + 2 x e^{x}$"
      ],
      "text/plain": [
       "-k + x**2*exp(x) + 2*x*exp(x)"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff(check,x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABg5klEQVR4nO3dd3hUdf728fekk5BMICEFCITeEnpJaOqKAQSxUgTj2qKuq6xt10XXFfVxUbeoK7I21t1FFBusohgFRZYWeugJRUqANAKZSSF1zvNHSH5GWoAkZ2Zyv65rLs3knDOfOZ4Lb77VYhiGgYiIiIi4PA+zCxARERGR+qFgJyIiIuImFOxERERE3ISCnYiIiIibULATERERcRMKdiIiIiJuQsFORERExE0o2ImIiIi4CQU7ERERkYtgGAZ2ux1n3ONBwU5ERETkIhQUFGC1WikoKDC7lDMo2ImIiIi4CQU7ERERETehYCciIiLiJhTsRERERNyEgp2IiIiIm1CwExEREXETCnYiIiIibkLBTkRERMRNKNiJiIiIuAkFOxERERE3oWAnIiIi4iYU7ERERETchIKdiIiIiJtQsBMRERFxEwp2IiIiIm5CwU5ERESc1pw5c+jQoQN+fn4MGDCAlStXnvf4FStWMGDAAPz8/OjYsSNvvvnmGcd89tln9OzZE19fX3r27MmiRYsaqvxGp2AnIiIiTumjjz7i4Ycf5qmnnmLLli2MGDGCsWPHcvjw4bMef+DAAa699lpGjBjBli1bePLJJ5k+fTqfffZZzTFr165l8uTJJCYmsnXrVhITE5k0aRLr1q1rrK/VoCyGYRhmFyEiIiLyc0OGDKF///784x//qHmvR48e3HDDDcyaNeuM45944gm++OILdu/eXfPe/fffz9atW1m7di0AkydPxm638/XXX9ccM2bMGFq0aMGHH35Yp7rsdjtWqxWbzUZQUNClfr0G4VWXgwzDoKCgoKFrEREREQGgrKyMjRs3Mn36dOx2e837V1xxBf/73/9qvVdt5cqVXHHFFbV+N2LECN59913y8vLw9vZm9erV/PrXvz7jmnPmzDnrNQFKS0spLS2t+fmfK/YAsGHPEQZ1bXvZ37WuAgMDsVgs5z2mTi121clURERERMxRlxbCOgW7xm6xs9vtREVFkZGR4XRNnO5I97vx6Z43Lt3vxqX73fjc8Z5nZmbSvXt3li5dyuDBg2ve//Of/8yCBQvYtGnTGef069eP2267jccee6zmvZSUFEaPHs2ePXsIDw8nJCSEN998k4kTJ9Yc89FHH/Hggw+Sm5t71lp+2mJX6TC48s/LOTj7lyxds5nBvTrV11e+oLq02NWpK9ZisZjyoAQFBbnNA+oKdL8bn+5549L9bly6343Pne65n58fnp6eFBQU1PpOdrud1q1bn/V7tmnThvz8/Fq/KyoqwsvLi+joaLy9vYmMjMRut9c6prCwkIiIiDrduwPHi6j0agZAlzahTne/NStWREREnI6Pjw8DBgxg6dKltd5funQpQ4cOPes58fHxZxz/7bffMnDgQLy9vc97zLmu+XPpWf83Ds/T4/ytZ2aoU4udiIiISGN79NFHSUxMZODAgcTHx/P2229z+PBh7r//fgBmzJjB0aNH+c9//gNUzYCdPXs2jz76KElJSaxdu5a5c+fWmu36m9/8hpEjR/LSSy9x/fXX8/nnn7Ns2TJWrVpVp5rSspx7MqlTBjtfX1+eeeYZfH19zS6lSdD9bny6541L97tx6X43Pne955MnTyYvL4/nnnuOzMxMYmJiWLJkCe3btweqxuH9dE27Dh06sGTJEh555BHeeOMNWrduzd///nduvvnmmmOGDh3KggUL+MMf/sDTTz9Np06d+OijjxgyZEidakr/SbBzxvutdexERERE6ugXf/mBfUdzyXh1klOuY6cxdiIiIiJ1UFJeycG8IrPLOC8FOxEREZE62JdTiMOA4GZOOZINULATERERqZPqiRNdwgNNruTcFOxERERE6qB6qZOuCnbnN2HCBNq1a4efnx+RkZEkJiZy7Nix855jGAYzZ86kdevWNGvWjCuvvJKdO3c2UsWu7eDBg9x999106NCBZs2a0alTJ5555hnKysrOe94dd9yBxWKp9YqLi2ukql3Xpd5vPeOX54UXXmDo0KH4+/sTHBxcp3P0jF+6S7nfesYv3cmTJ0lMTMRqtWK1WklMTCQ/P/+85+j5vjhz5syhQ4cO+Pn5MWDAAFauXFnTYtc5rPkZx69YsYIBAwbg5+dHx44defPNNxu7ZMBJgt1VV13Fxx9/THp6Op999hn79+/nlltuOe85L7/8Mn/729+YPXs2GzZsICIigmuuuaZRtz5zVWlpaTgcDt566y127tzJK6+8wptv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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<sympy.plotting.plot.Plot at 0x73eb424b1160>"
      ]
     },
     "execution_count": 154,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plot(x*exp(x),(x,-3,0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [],
   "source": [
    "checks=x*exp(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle x e^{x}$"
      ],
      "text/plain": [
       "x*exp(x)"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "checks"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(x + 1\\right) e^{x}$"
      ],
      "text/plain": [
       "(x + 1)*exp(x)"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(diff(checks,x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {},
   "outputs": [],
   "source": [
    "ismonotony=simplify(checks-checks.subs(x,-2-x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(x e^{2 x + 2} + x + 2\\right) e^{- x - 2}$"
      ],
      "text/plain": [
       "(x*exp(2*x + 2) + x + 2)*exp(-x - 2)"
      ]
     },
     "execution_count": 161,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ismonotony"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{\\left(x + 1\\right) \\left(e e^{x} - 1\\right) \\left(e e^{x} + 1\\right) e^{- x}}{e^{2}}$"
      ],
      "text/plain": [
       "(x + 1)*(E*exp(x) - 1)*(E*exp(x) + 1)*exp(-2)*exp(-x)"
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(diff(ismonotony,x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=sqrt(x**2+1)-x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - x + \\sqrt{x^{2} + 1}$"
      ],
      "text/plain": [
       "-x + sqrt(x**2 + 1)"
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{x - \\sqrt{x^{2} + 1}}{\\sqrt{x^{2} + 1}}$"
      ],
      "text/plain": [
       "(x - sqrt(x**2 + 1))/sqrt(x**2 + 1)"
      ]
     },
     "execution_count": 181,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "factor(diff(expr,x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1641.37"
      ]
     },
     "execution_count": 203,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "108.7*15.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "a=symbols(\"a\",real=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "expr=sin(x)**2+sin(x+a)**2-2*sin(x)*sin(x+a)*cos(a)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sin^{2}{\\left(x \\right)} - 2 \\sin{\\left(x \\right)} \\sin{\\left(a + x \\right)} \\cos{\\left(a \\right)} + \\sin^{2}{\\left(a + x \\right)}$"
      ],
      "text/plain": [
       "sin(x)**2 - 2*sin(x)*sin(a + x)*cos(a) + sin(a + x)**2"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left(\\sin{\\left(a \\right)} \\cos{\\left(x \\right)} + \\sin{\\left(x \\right)} \\cos{\\left(a \\right)}\\right)^{2} - 2 \\left(\\sin{\\left(a \\right)} \\cos{\\left(x \\right)} + \\sin{\\left(x \\right)} \\cos{\\left(a \\right)}\\right) \\sin{\\left(x \\right)} \\cos{\\left(a \\right)} + \\sin^{2}{\\left(x \\right)}$"
      ],
      "text/plain": [
       "(sin(a)*cos(x) + sin(x)*cos(a))**2 - 2*(sin(a)*cos(x) + sin(x)*cos(a))*sin(x)*cos(a) + sin(x)**2"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand_trig(expr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "answer=_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\sin^{2}{\\left(a \\right)}$"
      ],
      "text/plain": [
       "sin(a)**2"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "simplify(expand(answer))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "check=4*sin(x)**2+sin(x+pi/3)**2-2*sin(x)*sin(x+pi/3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 4 \\sin^{2}{\\left(x \\right)} - 2 \\sin{\\left(x \\right)} \\sin{\\left(x + \\frac{\\pi}{3} \\right)} + \\sin^{2}{\\left(x + \\frac{\\pi}{3} \\right)}$"
      ],
      "text/plain": [
       "4*sin(x)**2 - 2*sin(x)*sin(x + pi/3) + sin(x + pi/3)**2"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sqrt{3} \\sin{\\left(2 x \\right)}}{4} - \\frac{5 \\cos{\\left(2 x \\right)}}{4} + 2$"
      ],
      "text/plain": [
       "-sqrt(3)*sin(2*x)/4 - 5*cos(2*x)/4 + 2"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trigsimp(check)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle - \\frac{\\sqrt{3} \\sin{\\left(2 x \\right)}}{4} - \\frac{5 \\cos{\\left(2 x \\right)}}{4} + 2$"
      ],
      "text/plain": [
       "-sqrt(3)*sin(2*x)/4 - 5*cos(2*x)/4 + 2"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trigsimp(_.rewrite(sin))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "chi=ChiSquaredTest(Matrix([[5/S(6)*n,1/S(6)*n],[2/S(3)*n,1/S(3)*n]]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\left[\\begin{matrix}\\frac{5 n}{6} & \\frac{n}{6} & n\\\\\\frac{2 n}{3} & \\frac{n}{3} & n\\\\\\frac{3 n}{2} & \\frac{n}{2} & 2 n\\end{matrix}\\right]$"
      ],
      "text/plain": [
       "Matrix([\n",
       "[5*n/6, n/6,   n],\n",
       "[2*n/3, n/3,   n],\n",
       "[3*n/2, n/2, 2*n]])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chi.expand_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle \\frac{2 n}{27}$"
      ],
      "text/plain": [
       "2*n/27"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "chi.chi_squared_value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.0"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "2*54/27"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
